package superviseur.database;

import java.util.*;
import java.text.*;
import jcdatabase.*;
import java.io.*;

/**
 *
 * <p>Titre : Utilisateurs</p>
 * <p>Description : Liste des utilisateurs autorises
 * Sont memorises: nom, code, nombre d'entrees</p>
 * <p>Copyright : Copyright (c) 2003</p>
 * @author Gilles Petot
 * @version 1.0
 */

public class TUtilisateurs
{
   static JCTable utilisateurs = null;

   public TUtilisateurs(String fichier)
   {
      if (utilisateurs == null)
      {
	  utilisateurs = new JCTable(fichier);
      }
   }

   public void destroy()
   {
       utilisateurs.destroy();
       utilisateurs = null;
    }


  public void addUtilisateur(String nom, String code)
  {
      if (code.length() == 4)
      {
	 JCRow[] r = utilisateurs.select("code", "=", code);
	 if (r.length == 0)
	 {
	    JCRow newRow = new JCRow(utilisateurs);
	    int l = code.length();
	    if (l < 4)
	    {
	       while (l == 4)
	       {
		  code = code + "0";
		  l++;
	       }
	    }
	    if ( l > 4)
	    {
	       code = code.substring(4);
	    }
	    newRow.setString("NOM", nom);
	    newRow.setString("CODE", code);
	    newRow.setInt("NBREACCES", 0 );
	    utilisateurs.insert(newRow);
	 }
      }
   }

  public void deleteUtilisateur(String nom)
  {
      utilisateurs.delete("NOM", "=", nom);
  }

  public String[] getColonnes()
  {
     String[] result = {"nom", "code", "Nombre Acces"};
     return result;
  }

  public String getTableName()
  {
      return "Utilisateurs";
  }

  public Vector getAllUtilisateurs()
  {
     Vector result = new Vector();

     JCRow[] r = utilisateurs.select();
     for (int i = 0; i < r.length; i++)
     {
	String[] row = new String[3];
	//row[0] = Integer.toString(r[i].getInt("ID"));
	row[0] = r[i].getString("NOM");
	row[1] = r[i].getString("CODE");
	row[2] = Integer.toString(r[i].getInt("NBREACCES"));
	result.add(row);
     }
     return result;
  }

  public void ajouteAcces(String code)
  {

      JCRow[] r = utilisateurs.select("CODE", "=", code);
      int nbre = r[0].getInt("NBREACCES");
      nbre++;
      utilisateurs.update("NBREACCES", nbre, "CODE", "=", code);
  }



  // pour donner autorisation à une borne simulee
  public boolean getAutorisation(String code)
  {
     boolean result = false;
     JCRow[] r = utilisateurs.select("CODE", "=", code);
     int l = r.length;
     if (l == 1)
     {
	 int nbre = r[0].getInt("NBREACCES");
	 nbre++;
	 utilisateurs.update("NBREACCES", nbre, "CODE", "=", code);
	 result = true;
     }
     return result;
  }


}